<!DOCTYPE html>
<html><head>
<title>Git - The Learning Experience</title>




<meta charset="utf-8">
<meta name="X-UA-Compatible" content="IE=edge">
<meta name="google-site-verification" content="">
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
<meta content="telephone=no" name="format-detection">
<meta name="description" content="">
<meta name="renderer" content="webkit">
<meta name="theme-color" content="#ffffff">



<meta property="og:title" content="Git - The Learning Experience" />
<meta property="og:description" content="GitNote主要篇 本学习经验来源 Learn Git Branching https://learngitbranching.js.org/?locale=zh_CN  基础篇 git commit 修改了代码库并保存成一个新的提交记录（这个提交记录的内容可以是你对本地项目的改动），把它看作一个节点，它的父亲节点是上一个提交记录 可以加入commit，如 git commit -m &ldquo;A Little Try&rdquo;
git branch 分支名 创建一个新的分支 我想基于这个提交记录以及他的所有父提交进行新的工作 操作方法 git branch 分支名 例如 git branch newImage 创造了一个叫做newImage的新分支 创建之后 输入 git commit 只有master分支前进了，而newImage保持不动，因为此时星号*标注在master上，星号表示当前所在的分支
git checkout 分支名 表示将星号移动到我们要求的分支上
git merge 分支名 表示把我们提到的分支名合并到当前带星号的分支上 注意这个merge会形成一个新的提交，然后当前星号指示的分支指向这个新的提交
git rebase 分支名 我们在我们提到的分支名下建立了新的提交，此时星号指示的分支指向这个新的提交，我们得到一个线性的提交序列，星号分支原来指向的提交没有消失。
 提高篇—在提交树上移动 HEAD 指向你正在其基础上进行工作的提交记录，总是指向当前分支的最近一次提交记录 分离的HEAD就是让其指向某个具体的提交记录而不是分支名 比如只有master分支时，HEAD指向master，master指向提交记录C1（C1是哈希值）可以使用git log来查看提交记录的哈希值 使用 git checkout C1 后，变成了 HEAD 指向C1
相对引用 使用 ^ 向上移动一个提交记录 使用例子 git checkout master^ 使用 ~&lt; num &gt; 向上移动多个提交记录，如 ~3 例子 git checkout~4" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://wondrouswisdomcard.gitee.io/posts/blog1/" />
<meta property="article:published_time" content="2020-09-10T00:00:00+00:00" />
<meta property="article:modified_time" content="2020-09-10T00:00:00+00:00" /><meta property="og:site_name" content="My Blog" />





<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Git - The Learning Experience"/>
<meta name="twitter:description" content="GitNote主要篇 本学习经验来源 Learn Git Branching https://learngitbranching.js.org/?locale=zh_CN  基础篇 git commit 修改了代码库并保存成一个新的提交记录（这个提交记录的内容可以是你对本地项目的改动），把它看作一个节点，它的父亲节点是上一个提交记录 可以加入commit，如 git commit -m &ldquo;A Little Try&rdquo;
git branch 分支名 创建一个新的分支 我想基于这个提交记录以及他的所有父提交进行新的工作 操作方法 git branch 分支名 例如 git branch newImage 创造了一个叫做newImage的新分支 创建之后 输入 git commit 只有master分支前进了，而newImage保持不动，因为此时星号*标注在master上，星号表示当前所在的分支
git checkout 分支名 表示将星号移动到我们要求的分支上
git merge 分支名 表示把我们提到的分支名合并到当前带星号的分支上 注意这个merge会形成一个新的提交，然后当前星号指示的分支指向这个新的提交
git rebase 分支名 我们在我们提到的分支名下建立了新的提交，此时星号指示的分支指向这个新的提交，我们得到一个线性的提交序列，星号分支原来指向的提交没有消失。
 提高篇—在提交树上移动 HEAD 指向你正在其基础上进行工作的提交记录，总是指向当前分支的最近一次提交记录 分离的HEAD就是让其指向某个具体的提交记录而不是分支名 比如只有master分支时，HEAD指向master，master指向提交记录C1（C1是哈希值）可以使用git log来查看提交记录的哈希值 使用 git checkout C1 后，变成了 HEAD 指向C1
相对引用 使用 ^ 向上移动一个提交记录 使用例子 git checkout master^ 使用 ~&lt; num &gt; 向上移动多个提交记录，如 ~3 例子 git checkout~4"/>







<script src="/vendor/js/jquery.min.js" ></script>
<script src="/vendor/js/popper.min.js" ></script>
<script src="/vendor/js/bootstrap.min.js" ></script>
<script src="/vendor/js/smooth-scroll.polyfills.min.js" ></script>
<link type="text/css" rel="stylesheet" href="/vendor/css/bootstrap.min.css">
<script src="/vendor/js/vue.min.js" ></script>






<link rel="stylesheet" href="https://wondrouswisdomcard.gitee.io/scss/journal.min.c116bc90d171283f099f173854157ec8f183f9073b93443b2c8ad82899ee9025.css" integrity="sha256-wRa8kNFxKD8Jnxc4VBV&#43;yPGD&#43;Qc7k0Q7LIrYKJnukCU=" media="screen">



<link rel="stylesheet" href="https://wondrouswisdomcard.gitee.io/scss/dark-mode.min.552aae4638a84aa57cf0b195750a49ea9131d3bb621d1ed3ebc9b14b18166536.css" integrity="sha256-VSquRjioSqV88LGVdQpJ6pEx07tiHR7T68mxSxgWZTY=" media="screen">


<script src="https://wondrouswisdomcard.gitee.io/js/loadCSS.js"></script>
<script>
  loadCSS("https://fonts.googleapis.com/css?family=Lora|Montserrat|Fira+Mono|Noto+Serif+SC|Material+Icons");
</script>




  
    <script src="https://wondrouswisdomcard.gitee.io/js/toc-collapse.js"></script>
  



<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
<script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>
<script src="/vendor/js/md5.min.js"></script>
<script>
  var gitalk = new Gitalk({
  clientID: 'your client id',
  clientSecret: 'your client secret',
  repo: 'repo name',
  owner: 'user',
  admin: ['user'],
  id: md5(location.pathname),
  distractionFreeMode: 'false'
  });
  window.onload = function () {
        gitalk.render('gitalk-container')
  }
</script>







<script src="https://cdn.jsdelivr.net/npm/vue-disqus@3/dist/vue-disqus.js"></script>


</head>
<body>
    	<div id="app"><div ref="sideContainer" class="side-container">
    
    <a class="a-block nav-head false" href="https://wondrouswisdomcard.gitee.io">
    
        <div class="nav-title">
            Wondrous WindomCard&#39;s Blog
        </div>
        
        <div class="nav-subtitle">
            Themed by Diary.
        </div>
        
    </a>

    <div class="nav-link-list">
        
        
            
            
            
                
            
            
            
            <a class="a-block nav-link-item active" href="/posts">
                Archive
            </a>
            
        
            
            
            
            
            
            <a class="a-block nav-link-item false" href="/categories">
                Categories
            </a>
            
        
            
            
            
            
            
            <a class="a-block nav-link-item false" href="/tags">
                Tags
            </a>
            
        
            
            
            
            
            
            <a class="a-block nav-link-item false" href="/index.xml">
                RSS Feed
            </a>
            
        
    </div>

    

    <div class="nav-footer">
        
Hugo Theme <a href="https://github.com/amazingrise/hugo-theme-diary">Diary</a> by <a href="https://amazingrise.net">Rise</a>
<br>
Ported from <a href="https://mak1t0.cc/" target="_blank" rel="noreferrer noopener">Makito</a>'s <a href="https://github.com/SumiMakito/hexo-theme-journal/" target="_blank" rel="noreferrer noopener">Journal.</a> <br>
<br>

&copy;
	
	This is a customized copyright.
	

    </div>
    
</div><div ref="extraContainer" class="extra-container">
    
    
    <div class="toc animated-visibility" :class="{ invisible: scrollY <= 140 }">


	<div class="toc-content">
	
		
		
		
		<center>- CATALOG -</center>
		
		
		<ul>
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#gitnote%e4%b8%bb%e8%a6%81%e7%af%87" onclick="onNavClick(`#gitnote主要篇-nav`)" id="gitnote主要篇-nav">
									GitNote主要篇
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
							
								<ul class="collapse" data-toggle="collapse">
							
								<ul class="collapse" data-toggle="collapse">
							
								<ul class="collapse" data-toggle="collapse">
							
						
						
							<li>
								<a href="#%e6%9c%ac%e5%ad%a6%e4%b9%a0%e7%bb%8f%e9%aa%8c%e6%9d%a5%e6%ba%90-learn-git-branching" onclick="onNavClick(`#本学习经验来源-learn-git-branching-nav`)" id="本学习经验来源-learn-git-branching-nav">
									本学习经验来源 Learn Git Branching
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
							
								</ul>
							
								</ul>
							
						
						
						
							<li>
								<a href="#%e5%9f%ba%e7%a1%80%e7%af%87" onclick="onNavClick(`#基础篇-nav`)" id="基础篇-nav">
									基础篇
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
							
								<ul class="collapse" data-toggle="collapse">
							
						
						
							<li>
								<a href="#git-commit" onclick="onNavClick(`#git-commit-nav`)" id="git-commit-nav">
									git commit
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git-branch-%e5%88%86%e6%94%af%e5%90%8d" onclick="onNavClick(`#git-branch-分支名-nav`)" id="git-branch-分支名-nav">
									git branch 分支名
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git-checkout-%e5%88%86%e6%94%af%e5%90%8d" onclick="onNavClick(`#git-checkout-分支名-nav`)" id="git-checkout-分支名-nav">
									git checkout 分支名
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git-merge-%e5%88%86%e6%94%af%e5%90%8d" onclick="onNavClick(`#git-merge-分支名-nav`)" id="git-merge-分支名-nav">
									git merge 分支名
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git-rebase-%e5%88%86%e6%94%af%e5%90%8d" onclick="onNavClick(`#git-rebase-分支名-nav`)" id="git-rebase-分支名-nav">
									git rebase 分支名
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
							
								</ul>
							
						
						
						
							<li>
								<a href="#%e6%8f%90%e9%ab%98%e7%af%87%e5%9c%a8%e6%8f%90%e4%ba%a4%e6%a0%91%e4%b8%8a%e7%a7%bb%e5%8a%a8" onclick="onNavClick(`#提高篇在提交树上移动-nav`)" id="提高篇在提交树上移动-nav">
									提高篇—在提交树上移动
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
							
								<ul class="collapse" data-toggle="collapse">
							
						
						
							<li>
								<a href="#head" onclick="onNavClick(`#head-nav`)" id="head-nav">
									HEAD
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#%e7%9b%b8%e5%af%b9%e5%bc%95%e7%94%a8" onclick="onNavClick(`#相对引用-nav`)" id="相对引用-nav">
									相对引用
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#%e5%bc%ba%e5%88%b6%e4%bf%ae%e6%94%b9%e5%88%86%e6%94%af%e4%bd%8d%e7%bd%ae" onclick="onNavClick(`#强制修改分支位置-nav`)" id="强制修改分支位置-nav">
									强制修改分支位置
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#%e6%92%a4%e9%94%80%e5%8f%98%e6%9b%b4-git-reset-%e5%92%8c-git-revert" onclick="onNavClick(`#撤销变更-git-reset-和-git-revert-nav`)" id="撤销变更-git-reset-和-git-revert-nav">
									撤销变更 git reset 和 git revert
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#%e6%95%b4%e7%90%86%e6%8f%90%e4%ba%a4%e8%ae%b0%e5%bd%95-git-cherry-pick" onclick="onNavClick(`#整理提交记录-git-cherry-pick-nav`)" id="整理提交记录-git-cherry-pick-nav">
									整理提交记录 git cherry-pick
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#%e4%ba%a4%e4%ba%92%e5%bc%8f%e7%9a%84rebase" onclick="onNavClick(`#交互式的rebase-nav`)" id="交互式的rebase-nav">
									交互式的rebase
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
							
								</ul>
							
						
						
						
							<li>
								<a href="#%e6%9d%82%e9%a1%b9" onclick="onNavClick(`#杂项-nav`)" id="杂项-nav">
									杂项
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
							
								<ul class="collapse" data-toggle="collapse">
							
						
						
							<li>
								<a href="#%e6%8f%90%e4%ba%a4%e7%9a%84%e6%8a%80%e5%b7%a7" onclick="onNavClick(`#提交的技巧-nav`)" id="提交的技巧-nav">
									提交的技巧
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git-tag" onclick="onNavClick(`#git-tag-nav`)" id="git-tag-nav">
									git tag
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git-describe" onclick="onNavClick(`#git-describe-nav`)" id="git-describe-nav">
									git describe
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#%e9%80%89%e6%8b%a9%e7%88%b6%e6%8f%90%e4%ba%a4%e8%ae%b0%e5%bd%95" onclick="onNavClick(`#选择父提交记录-nav`)" id="选择父提交记录-nav">
									选择父提交记录
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git%e5%ad%a6%e4%b9%a0%e7%9a%84%e6%8e%a8%e8%8d%90%e9%98%85%e8%af%bb" onclick="onNavClick(`#git学习的推荐阅读-nav`)" id="git学习的推荐阅读-nav">
									Git学习的推荐阅读：
								</a>
							</li>
						
						
					
				
			
		</ul>
	</div>

</div>
    
    <div class="pagination">
        <a id="globalBackToTop" class="pagination-action animated-visibility" href="#top" :class="{ invisible: scrollY == 0 }">
            <i class="material-icons pagination-action-icon">
                keyboard_arrow_up
            </i>
        </a>
        
        <a class="pagination-action" v-on:click="toggleDarkMode">
            <i class="material-icons pagination-action-icon" v-if="isDarkMode">
                brightness_4
            </i>
            <i class="material-icons pagination-action-icon" v-else="isDarkMode">
                brightness_7
            </i>
        </a>
        
        
    </div>
</div>
<div class="single-column-drawer-container" ref="drawer"
     v-bind:class="{ 'single-column-drawer-container-active': isDrawerOpen }">
    <div class="drawer-content">
        <div class="drawer-menu">
            
            
            
                
                
                
                    
                
                
                
                <a class="a-block drawer-menu-item active" href="/posts">
                    Archive
                </a>
                
            
                
                
                
                
                
                <a class="a-block drawer-menu-item false" href="/categories">
                    Categories
                </a>
                
            
                
                
                
                
                
                <a class="a-block drawer-menu-item false" href="/tags">
                    Tags
                </a>
                
            
                
                
                
                
                
                <a class="a-block drawer-menu-item false" href="/index.xml">
                    RSS Feed
                </a>
                
            
            
            <div class="toc">


	<div class="toc-content">
	
		
		
		
		<center>- CATALOG -</center>
		
		
		<ul>
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#gitnote%e4%b8%bb%e8%a6%81%e7%af%87" onclick="onNavClick(`#gitnote主要篇-nav`)" id="gitnote主要篇-nav">
									GitNote主要篇
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
							
								<ul class="collapse" data-toggle="collapse">
							
								<ul class="collapse" data-toggle="collapse">
							
								<ul class="collapse" data-toggle="collapse">
							
						
						
							<li>
								<a href="#%e6%9c%ac%e5%ad%a6%e4%b9%a0%e7%bb%8f%e9%aa%8c%e6%9d%a5%e6%ba%90-learn-git-branching" onclick="onNavClick(`#本学习经验来源-learn-git-branching-nav`)" id="本学习经验来源-learn-git-branching-nav">
									本学习经验来源 Learn Git Branching
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
							
								</ul>
							
								</ul>
							
						
						
						
							<li>
								<a href="#%e5%9f%ba%e7%a1%80%e7%af%87" onclick="onNavClick(`#基础篇-nav`)" id="基础篇-nav">
									基础篇
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
							
								<ul class="collapse" data-toggle="collapse">
							
						
						
							<li>
								<a href="#git-commit" onclick="onNavClick(`#git-commit-nav`)" id="git-commit-nav">
									git commit
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git-branch-%e5%88%86%e6%94%af%e5%90%8d" onclick="onNavClick(`#git-branch-分支名-nav`)" id="git-branch-分支名-nav">
									git branch 分支名
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git-checkout-%e5%88%86%e6%94%af%e5%90%8d" onclick="onNavClick(`#git-checkout-分支名-nav`)" id="git-checkout-分支名-nav">
									git checkout 分支名
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git-merge-%e5%88%86%e6%94%af%e5%90%8d" onclick="onNavClick(`#git-merge-分支名-nav`)" id="git-merge-分支名-nav">
									git merge 分支名
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git-rebase-%e5%88%86%e6%94%af%e5%90%8d" onclick="onNavClick(`#git-rebase-分支名-nav`)" id="git-rebase-分支名-nav">
									git rebase 分支名
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
							
								</ul>
							
						
						
						
							<li>
								<a href="#%e6%8f%90%e9%ab%98%e7%af%87%e5%9c%a8%e6%8f%90%e4%ba%a4%e6%a0%91%e4%b8%8a%e7%a7%bb%e5%8a%a8" onclick="onNavClick(`#提高篇在提交树上移动-nav`)" id="提高篇在提交树上移动-nav">
									提高篇—在提交树上移动
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
							
								<ul class="collapse" data-toggle="collapse">
							
						
						
							<li>
								<a href="#head" onclick="onNavClick(`#head-nav`)" id="head-nav">
									HEAD
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#%e7%9b%b8%e5%af%b9%e5%bc%95%e7%94%a8" onclick="onNavClick(`#相对引用-nav`)" id="相对引用-nav">
									相对引用
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#%e5%bc%ba%e5%88%b6%e4%bf%ae%e6%94%b9%e5%88%86%e6%94%af%e4%bd%8d%e7%bd%ae" onclick="onNavClick(`#强制修改分支位置-nav`)" id="强制修改分支位置-nav">
									强制修改分支位置
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#%e6%92%a4%e9%94%80%e5%8f%98%e6%9b%b4-git-reset-%e5%92%8c-git-revert" onclick="onNavClick(`#撤销变更-git-reset-和-git-revert-nav`)" id="撤销变更-git-reset-和-git-revert-nav">
									撤销变更 git reset 和 git revert
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#%e6%95%b4%e7%90%86%e6%8f%90%e4%ba%a4%e8%ae%b0%e5%bd%95-git-cherry-pick" onclick="onNavClick(`#整理提交记录-git-cherry-pick-nav`)" id="整理提交记录-git-cherry-pick-nav">
									整理提交记录 git cherry-pick
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#%e4%ba%a4%e4%ba%92%e5%bc%8f%e7%9a%84rebase" onclick="onNavClick(`#交互式的rebase-nav`)" id="交互式的rebase-nav">
									交互式的rebase
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
							
								</ul>
							
						
						
						
							<li>
								<a href="#%e6%9d%82%e9%a1%b9" onclick="onNavClick(`#杂项-nav`)" id="杂项-nav">
									杂项
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
							
								<ul class="collapse" data-toggle="collapse">
							
						
						
							<li>
								<a href="#%e6%8f%90%e4%ba%a4%e7%9a%84%e6%8a%80%e5%b7%a7" onclick="onNavClick(`#提交的技巧-nav`)" id="提交的技巧-nav">
									提交的技巧
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git-tag" onclick="onNavClick(`#git-tag-nav`)" id="git-tag-nav">
									git tag
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git-describe" onclick="onNavClick(`#git-describe-nav`)" id="git-describe-nav">
									git describe
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#%e9%80%89%e6%8b%a9%e7%88%b6%e6%8f%90%e4%ba%a4%e8%ae%b0%e5%bd%95" onclick="onNavClick(`#选择父提交记录-nav`)" id="选择父提交记录-nav">
									选择父提交记录
								</a>
							</li>
						
						
					
				
			
				
				
					
						
						
						
						
						
							<li>
								<a href="#git%e5%ad%a6%e4%b9%a0%e7%9a%84%e6%8e%a8%e8%8d%90%e9%98%85%e8%af%bb" onclick="onNavClick(`#git学习的推荐阅读-nav`)" id="git学习的推荐阅读-nav">
									Git学习的推荐阅读：
								</a>
							</li>
						
						
					
				
			
		</ul>
	</div>

</div>
            
        </div>
    </div>
</div>
<transition name="fade">
    <div v-bind:class="{ 'single-column-drawer-mask': mounted }" v-if="isDrawerOpen" v-on:click="toggleDrawer"></div>
</transition>
<nav ref="navBar" class="navbar sticky-top navbar-light single-column-nav-container">
    <div ref="navBackground" class="nav-background"></div>
    <div class="container container-narrow nav-content">
        <button id="nav_dropdown_btn" class="nav-dropdown-toggle" type="button" v-on:click="toggleDrawer">
            <i class="material-icons">
                menu
            </i>
        </button>
        <a ref="navTitle" class="navbar-brand" href="https://wondrouswisdomcard.gitee.io">
            Wondrous WindomCard&#39;s Blog
        </a>
        
        <button type="button" class="nav-darkmode-toggle" v-on:click="toggleDarkMode">
            <i class="material-icons" v-if="isDarkMode">
                brightness_4
            </i>
            <i class="material-icons" v-else="isDarkMode">
                brightness_7
            </i>
        </button>
        
    </div>
</nav>
<div class="single-column-header-container" ref="pageHead"
     v-bind:style="{ transform: 'translateZ(0px) translateY('+.3*scrollY+'px)', opacity: 1-navOpacity }">
    <a href="https://wondrouswisdomcard.gitee.io">
        <div class="single-column-header-title">Wondrous WindomCard&#39;s Blog</div>
        
        <div class="single-column-header-subtitle">Themed by Diary.</div>
        

    </a>
</div>

            <div id="content">
<div ref="streamContainer" class="stream-container">
    <div class="post-list-container post-list-container-shadow">
        <div class="post">
            
            
            

            <div class="post-head-wrapper-text-only"
                
            >
                <div class="post-title">
                    Git - The Learning Experience
                    
                    <div class="post-meta">
                        
                        <time itemprop="datePublished">
                            2020-09-10 00:00
                        </time>
                        

                        
                            <i class="material-icons" style="">folder</i>
                                <a href="/categories/">[Experience &amp; Practice]</a>
                                &nbsp;
                        

                        
                            <i class="material-icons" style="">label</i>
                            
                                <a href="/tags/git">Git</a>
                                &nbsp;
                            
                        
                        
                    </div>
                </div>
            </div>
            
            <div class="post-body-wrapper">
                
                <div class="post-body" v-pre>
                
                    <h1 id="gitnote主要篇">GitNote主要篇</h1>
<h4 id="本学习经验来源-learn-git-branching">本学习经验来源 Learn Git Branching</h4>
<h5 id="httpslearngitbranchingjsorglocalezh_cn"><a href="https://learngitbranching.js.org/?locale=zh_CN">https://learngitbranching.js.org/?locale=zh_CN</a></h5>
<p><img src="../../images/blog1/webpage.png" alt="Learngitbranching"></p>
<!-- raw HTML omitted -->
<hr>
<h2 id="基础篇">基础篇</h2>
<h3 id="git-commit">git commit</h3>
<p>修改了代码库并保存成一个新的提交记录（这个提交记录的内容可以是你对本地项目的改动），把它看作一个节点，它的父亲节点是上一个提交记录
可以加入commit，如 git commit -m &ldquo;A Little Try&rdquo;</p>
<h3 id="git-branch-分支名">git branch 分支名</h3>
<p>创建一个新的分支 我想基于这个提交记录以及他的所有父提交进行新的工作
操作方法 git branch 分支名
例如 git branch newImage 创造了一个叫做newImage的新分支
创建之后 输入 git commit 只有master分支前进了，而newImage保持不动，因为此时星号*标注在master上，星号表示当前所在的分支</p>
<h3 id="git-checkout-分支名">git checkout 分支名</h3>
<p>表示将星号移动到我们要求的分支上</p>
<h3 id="git-merge-分支名">git merge 分支名</h3>
<p>表示把我们提到的分支名合并到当前带星号的分支上
注意这个merge会形成一个新的提交，然后当前星号指示的分支指向这个新的提交</p>
<h3 id="git-rebase-分支名">git rebase 分支名</h3>
<p>我们在我们提到的分支名下建立了新的提交，此时星号指示的分支指向这个新的提交，我们得到一个线性的提交序列，星号分支原来指向的提交没有消失。</p>
<hr>
<h2 id="提高篇在提交树上移动">提高篇—在提交树上移动</h2>
<h3 id="head">HEAD</h3>
<p>指向你正在其基础上进行工作的提交记录，总是指向当前分支的最近一次提交记录
分离的HEAD就是让其指向某个具体的提交记录而不是分支名
比如只有master分支时，HEAD指向master，master指向提交记录C1（C1是哈希值）可以使用git log来查看提交记录的哈希值
使用 git checkout C1 后，变成了 HEAD 指向C1</p>
<h3 id="相对引用">相对引用</h3>
<p>使用 ^ 向上移动一个提交记录 使用例子 git checkout master^
使用 ~&lt; num &gt; 向上移动多个提交记录，如 ~3 例子 git checkout~4</p>
<h3 id="强制修改分支位置">强制修改分支位置</h3>
<p>移动分支，可以直接使用 -f 选项让分支指向另一个提交
如 git branch -f master HEAD~3 会将master分支强制指向 HEAD的第三级父提交</p>
<h3 id="撤销变更-git-reset-和-git-revert">撤销变更 git reset 和 git revert</h3>
<p>git reset 把分支记录会退几个提交记录来撤销改动 git reset 向上移动分支，例如 git reset HEAD~1 而在reset后，之前的变更（在移动HEAD之前HEAD的指向内容还在，只是处于未加入暂存区状态 （这种改写方式对远程分支是无效的)
git revert 可以用于远程分支，撤销更改并分享给别人 使用git revert HEAD后，在我们要撤销的记录后面多了一个新提交，这个新提交记录引入了更改—这些更改用来撤销原提交</p>
<h3 id="整理提交记录-git-cherry-pick">整理提交记录 git cherry-pick</h3>
<p>如果你想将一些提交复制到当前位置（HEAD）下面的话
git cherry-pick 记录名（哈希值）（多个 依次），git就回吧这多个记录一一复制到当前分支下。</p>
<h3 id="交互式的rebase">交互式的rebase</h3>
<p>它会打开一个UI界面 你可以通过鼠标拖放来调整提交记录的顺序；或删除你不想要的提交（通过切换pick的状态来完成；或合并提交，允许你把多个记录合并成一个
例子有一条从C0到C5的提交记录，master指向C5
git rebase -i HEAD~4
git会严格按照你在对话框中指定的方式进行复制</p>
<hr>
<h2 id="杂项">杂项</h2>
<h3 id="提交的技巧">提交的技巧</h3>
<p>用git rebase -i来重新提交排序，把想修改的移到前面
再用git commit —amend 来进行小修改
再用git rebase -i 来讲它们调回原来的顺序
再把master移到最前面</p>
<p>因为cherry-pick可以将提交树上的任何地方的提交记录取过来追加到HEAD上（只要不是HEAD上游就行）</p>
<h3 id="git-tag">git tag</h3>
<p>永远指向某个分支的标识，可以像分支一样对其进行引用了
git tag v1 c1 
c1为提交记录（哈希值），给他标记v1
如果不指定提交记录，默认会用HEAD所指向的位置
但不能直接在标签下做commit</p>
<h3 id="git-describe">git describe</h3>
<p>用来描述离你最近的标签
git describe &lt; ref &gt;
&lt; ref &gt;指任何能被git识别成提交记录的引用（可以是分支名，提交哈希值，标签），如果没有指定，会默认HEAD
他的输出结果： &lt; tag &gt;_&lt; numCommits &gt;_g&lt; hash &gt;
tag是离你最近的标签 numCommit指ref与tag相差多少个提交记录，hash表示你所给定的ref所表示的提交记录哈希值的前几位，而如果当ref提交记录上有某个标签时，则只输出标签名称</p>
<h3 id="选择父提交记录">选择父提交记录</h3>
<p>如果有两个父提交，git checkout master^ 表示返回第一个 git checkout master^2 表示返回第二个父提交上
还支持链式操作 git checkout HEAD~ ^2~2 <em>(在 ~ 与 ^ 之间没有空格)</em></p>
<hr>
<p><em>本文是我学习Learngitbranching的一些学记笔记，Learngitbranching中还有<strong>远程篇</strong>，（包括我们很多常用的操作）该兴趣的读者也可以进入 Learngitbranching <a href="https://learngitbranching.js.org/?locale=zh_CN">https://learngitbranching.js.org/?locale=zh_CN</a> 学习。</em>
<em>由于小作者学习精力有限，不少步骤没有进行实际操作，如有错误望举出[跪]。</em></p>
<h3 id="git学习的推荐阅读">Git学习的推荐阅读：</h3>
<p>[1] 菜鸟教程git教程 <a href="https://www.runoob.com/git/git-tutorial.html">https://www.runoob.com/git/git-tutorial.html</a></p>
<p>[2] Git完整指令手册 <a href="https://git-scm.com/docs">https://git-scm.com/docs</a></p>
<hr>

                    
                    <HR width="100%" id="EOF">
		    <p style="color:#777;">Last modified on 2020-09-10</p>
                    
                </div>
            </div>
            
            
            <nav class="post-pagination">

                
                <a class="newer-posts" href="https://wondrouswisdomcard.gitee.io/posts/homework2/">
			Next<br>Homework of Week 2
                </a>
                
                
                
                <a class="older-posts" href="https://wondrouswisdomcard.gitee.io/posts/homework1/">
			Previous<br>Homework of Week 1
                </a>
                
            </nav>
            <div class="post-comment-wrapper">
                
<div class="comments">
    <vue-disqus shortname="Your disqus short name."></vue-disqus>
</div>
<noscript><noscript>Please activate JavaScript to view comments.</noscript></noscript>
<a href="https://disqus.com/" class="dsq-brlink">Comments powered by <span class="logo-disqus">Disqus</span></a>



<div id="gitalk-container"></div>






            </div>
        </div>
    </div>
</div>

            </div><div id="single-column-footer">
Hugo Theme <a href="https://github.com/amazingrise/hugo-theme-diary">Diary</a> by <a href="https://amazingrise.net">Rise</a>
<br>
Ported from <a href="https://mak1t0.cc/" target="_blank" rel="noreferrer noopener">Makito</a>'s <a href="https://github.com/SumiMakito/hexo-theme-journal/" target="_blank" rel="noreferrer noopener">Journal.</a> <br>
<br>

&copy;
	
	This is a customized copyright.
	
</div>
            </div>
    <script>
let app;

app = new Vue({
    el: '#app',
    data: {
        scrollY: 0,
        navOpacity: 0,
        isDrawerOpen: false,
        mounted: false,
        isDarkMode: false
    },
    methods: {
            sgn(t, x) {
                let k = 1. / (1. - 2 * t);
                if (x <= t) return 0;
                else if (x >= 1 - t) return 1;
                else {
                    return k * (x - t);
                }
            },
            handleScroll() {
                this.scrollY = window.scrollY;
                this.navOpacity = this.sgn(.0, Math.min(1, Math.max(0, window.scrollY / (this.pageHeadHeight() - this.navBarHeight() * 0.8))));
                const {navBar, navBackground, navTitle, extraContainer, streamContainer} = this.$refs;

                if (this.navOpacity >= 1) {
                    navBackground.style.opacity = 1;
                    navTitle.style.opacity = 1;
                } else {
                    navBackground.style.opacity = 0;
                    navTitle.style.opacity = 0;
                }
            },
            handleResize() {
                const {navBar, navBackground, navTitle, extraContainer, streamContainer} = this.$refs;
                extraContainer.style.left = (streamContainer.offsetWidth - extraContainer.offsetWidth) + 'px';
            },
            navBarHeight() {
                return this.$refs.navBar.offsetHeight;
            },
            pageHeadHeight() {
                return this.$refs.pageHead.offsetHeight;
            },
            toggleDrawer() {
                this.isDrawerOpen = !this.isDrawerOpen;
                document.getElementsByTagName('html')[0].style.overflow = this.isDrawerOpen ? 'hidden' : 'unset';
            },
            closeDrawer() {
                this.isDrawerOpen = false;
                document.getElementsByTagName('html')[0].style.overflow = this.isDrawerOpen ? 'hidden' : 'unset';
            },
            toggleDarkMode() {
                this.isDarkMode = !this.isDarkMode;
                if (this.isDarkMode==true){
                    document.cookie = "night=1;path=/";
                    document.body.classList.add("night");
                } else {
                    document.cookie = "night=0;path=/";
                    document.body.classList.remove("night");
                }
            }
    },
    created() {
        window.addEventListener('scroll', this.handleScroll);
        window.addEventListener('resize', this.handleResize);
        window._nonDesktop = function () {
            let check = false;
            (function (a) {
                if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true;
            })(navigator.userAgent || navigator.vendor || window.opera);
            return check;
        };
        
        var night = document.cookie.replace(/(?:(?:^|.*;\s*)night\s*\=\s*([^;]*).*$)|^.*$/, "$1");
        if (night==""){
            if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
                
            }
        }else{
            
            if (night=="1") {
                this.toggleDarkMode();
            }
        }
    },
    mounted() {
        this.handleScroll();
        this.handleResize();
        this.mounted = true;

        
    },
    destroyed() {
        window.removeEventListener('scroll', this.handleScroll);
        window.removeEventListener('resize', this.handleResize);
    }
});
</script>

<script src="https://wondrouswisdomcard.gitee.io/js/journal.js"></script>
    </body>
</html>
